const Koa=require('koa2');
const app=new Koa();
const sleep=ms=>new Promise((resolve,reject)=>{
    setTimeout(()=>{
        resolve();
    },ms);
})
app.use(async (ctx,next)=>{
    console.log('读取静态文件');
    ctx.body='静态文件';
    next();
    console.log('输出静态文件');
});

    
app.use(async (ctx,next)=>{
    console.log(['<--',ctx.method,ctx.url].join(' '));
    await next();//
    console.log(['-->',ctx.method,ctx.url,ctx.response.status,ctx.response.header['content-length']+'b'].join(' '));
});

app.use(async ctx=>{
    await sleep(Math.random()*2000|0);
    console.log('Done');
    ctx.body+='<br>'+new Date().toLocaleString();
});


app.listen(3002,()=>{
    console.log('\n\nPort 3002',new Date().toLocaleTimeString());
});

/*
* 不等待next()
* 会调用下一个中间件，但会提前响应
* */